Gestione barcode EAN 128 SSCC (GS1-128) | |||
La funzionalità è abilitata in automatico nella gestione documenti, e funziona 'sparando' il barcode nel campo codice articolo della griglia del corpo del documento (non funziona negli scarichi collegati), nella stessa modalità la funzione è attiva anche nella gestione ordini, nella griglia di dettaglio delle liste selezionate articoli e nei programmi della logistica su palmare di ricevimento merce, movimentazione interna, picking e inventario. Visto che il campo accetta solo 18 caratteri (la lunghezza massima del cod. articolo) se i caratteri vengono inseriti da barcode in emulazione tastiera (ovvero il tempo tra l'inserimento di un carattere e l'altro è minore di 25 millisecondi) il campo può accettare più di 18 caratteri (non c'è limite). In questa versione la parte di codice barcode che identifica un codice a barre (ed in Business tale codice è stato associato ad una fase), oltre ad acquisire il cod. articolo viene impostata correttamente anche la fase associata al codice barcode. Visto che non è possibile determinare in modo preciso se il codice inserito è un EAN128 che segue lo standard SSCC (da qui in avanti semplicemente EAN128), viene assunto che il codice inizi per '00' e che la sua lunghezza sia almeno 20 caratteri, oppure che inizi per '01' o '02' e che sia lungo almeno 16 caratteri. Nel codice a barre EAN128 il codice è una normale sequenza di caratteri, dove alcuni sono degli identificativi di campo, altri il valore, ad esempio il codice: (01)00614141999996(17)100101(10)123ABC(21)1234567890 Identifica:
Quando il lettore legge il barcode, lo acquisisce senza le () e qui nasce il problema, visto che alcuni marcatori sono a lunghezza fissa (ad esempio il codice che segue lo (01) è sempre numerico di 14 caratteri, il codice che segue lo (00) è sempre numerico 18 caratteri), mentre altri sono a lunghezza variabile (ad esempio il codice (10) lotto può essere da 1 a 20 caratteri) ed alla fine viene 'passato' un carattere terminatore che determina la fine del campo e l'inizio di quello successivo (solitamente tale carattere non è visibile). Alcuni lettori di barcode, come carattere di fine campo variabile passano "APPS", "MENU", "OEMPLUS" o "F8", ma non sappiamo se sono presenti altre soluzioni. Al momento Business tratta in maniera particolare solo questi 4 tipi di carattere, ed è possibile aggiungerne un'ulteriore utilizzando l'opzione OPZIONI\FineMarcatoreEan128 che permette di indicare un carattere speciale per la determinazione dei terminatori degli EAN128. Nell'opzione deve essere indicato il nome del carattere indicando il nome del tasto e non il carattere che stampa, per esempio il carattere "+" potrebbe in realtà chiamarsi "ADD" o "OEMPLUS" e nell'opzione di registro occorre indicare uno di quei nomi per intercettarlo, la stessa cosa potrà valere anche per tutti gli altri caratteri speciali. Per una mappatura di riferimento ad esempio consultare il seguente link microsoft https://msdn.microsoft.com/en-us/library/system.windows.forms.keys.aspx :
E' possibile anche usare l'opzione OPZIONI\FineMarcatoreEan128Char dove è possibile indicare il carattere terminatore in formato testo, quindi è possibile scrivere scrivere direttamente il "+", il "|" o il tasto che più si preferisce, attivando tale opzione il programma nel riconoscimento dei barcode EAN128 effettuerà l'elaborazione sul testo visibile nel campo dove è stato letto il barcode. Attivando l'opzione FineMarcatoreEan128Char questa ha precedenza rispetto alla precedente FineMarcatoreEan128 che verrà ignorata. Per esempio, impostando i seguenti 2 barcode su un articolo:
leggendo da lettore barcode il seguente 0112345678901234 (con identificatore 01 e quindi 14 caratteri) oppure il seguente 00123456789012345678 (con identificatore 00 e quindi 18 caratteri)
nel caso il barcode letto contenga il lotto un possibile barcode letto dal barcode potrebbe avere la forma: 01 12345678904444 10 3400001MENU Al momento Business traduce il barcode EAN128 letto tramite i marcatori (AI); i marcatori letti da Business sono solo:
NB La codifica EAN128 permette l'indicazione di marcatori a lunghezza fissa ed a lunghezza variabile.
Le seguenti opzioni di registro, consentono la definizione di un marcatore che indice la fine del campo variabile:
OPZIONI\FineMarcatoreEan128
Gestione del confenzionamento, a seguito degli AI 01 e 02 viene indicato un barcode:
Per gestire il tipo di confezionamento, nell'anagrafica dei barcode il Tipo Barcode UPC (bc_tipo = 'U') è stato rinominato in GTIN\EAN14. Per i barcode di questa tipologia la colonna quantità sarà modificabile e sarà utilizzata SOLO durante la lettura di barcode GS1 (salvo presenza di opzioni di registro già esistenti a standard che derogano su questo comportamento). Casi particolari del confezionamento:
In entrambi i casi, per evitare di dover caricare i barcode che iniziano con 9, con 0 o con 00, durante la verifica di questi barcode il programma verificherà se esiste un barcode uguale per quanto riguarda la parte di identificazione dell'articolo. In pratica verrà escluso il carattere 9 iniziale (o i primi 2 zeri) e il carattere finale di controllo. Gestione dei colli: Alla lettura dei barcode GS1 che inizia con 01 verrà indicata come Unità di Misura l'unità di misura indicata nel barcode, come numero di colli fisso a 1 e come quantità quella determinata dal confezionamento (dalla tabella barcode). Per i barcode GS1 che iniziano con 02, valgono le regole sopra, ma sia i colli che le quantità saranno moltiplicate per la quantità indicata nel'AI 37. Note per programmatori Per ottenere la seguente funzionalità negli entity dei programmi in cui la funzionalità è presente, nella routine di validazione del cod. articolo (BeforeColUpdate_CORPO_ec_codart) è stata estrapolata la funzione per determinale il cod. articolo dato un codice in input (nuova funzione BeforeColUpdateCodart_TrovaArticolo), questa funzione lo cerca prima nell'anagrafica articoli, poi nel barcode (tutto il codice passato deve essere codificato nel campo barcode.bc_code), poi nei codici utilizzati da cliente/fornitore (codarfo), poi verifica se il codice indicato potrebbe essere un lotto (e nel caso compila il campo cod. articolo e si memorizza nella variabile strLottoXDaAnalotti il lotto, che verrà impostato in automatico alla fine della routine AfterColUpdate_CORPO_ec_codart), poi verifica se il codice potrebbe essere un EAN128 (funzione ereditabile BeforeColUpdateCodart_TrovaArticoloEAN128), poi verifica se il codice inserito è presente nel catalogo degli articoli da importare di Business. Per realizzare la gestione dei barcode EAN128 è stata aggiunta la routine. Nella nuova funzione suddetta possono venir impostate le variabili 'strEAN128Matric', 'strEAN128Lotto', 'strEAN128DtProd', 'strEAN128DtScad' (che potrebbero essere compilate dalla lettura del barcode). Se valorizzate, nella routine 'AfterColUpdate_CORPO_ec_codart' dopo aver inserito il cod. articolo verranno compilati lotto, matricola e nell'anagrafica del lotto e impostate le date di produzione e scadenza. Se la funzione per leggere il cod. EAN128 non risponde alle specifiche richieste di determinati casi, potrà essere facilmente ereditata da BEVEBOLL. La funzione BeforeColUpdateCodart_TrovaArticoloEAN128 riceve in input il codice STRINGA letto, dove non sono presenti gli eventuali caratteri di fine campo a lunghezza variabile. Per avere il codice effettivamente 'sparato' dal lettore è disponibile all'interno della funzione la variabile strEAN128Barcode, che andrà opportunamente tradotta (ogni carattere letto è separato da '§'). NB: le routine in oggetto 'BeforeColUpdateCodart_TrovaArticoloEAN128' aggiunte nei vari programmi chiamano tutti comunque la funzione presente in BELBMENU: Public Overridable Function TrascodificaBarcodeEan128(ByVal strDitta As String, ByVal strChiamante As String, ByVal strBarcodeEAN128 As String, ByVal strCodiceBarcodeEAN128 As String, ByRef dttOut As DataTable) As Boolean Quindi eventulmente se necessaria in altri programmi potra essere richiamata o in caso anche ereditata creanto un apposita enity su BELBMENU. |